There really isn't much to this program although it has proved very useful. My friends (jokingly, I think) accuse me of cheating by using it but really all this program does is show me what players are likely to be available in the coming rounds. The Yahoo website has a bad version of this but even then, only if you use their preset rankings (which often times don't reflect injuries and are badly out of date). I started this project in 2014 and it was barely implemented by the time I was able to use it. In 2015, I worked on making it easier to use. I also had to deal with making it portable (because my friend started having a draft party at his house). So I created a command line runnable (jar file).
I initially used jsoup to parse the rankings which I only had via html. Overtime, the website I used for ADP rankings (Fantasy Football Calculator) has added a spreadsheet format (CSV) and just this past year (2018) added JSON. I have had to update the scraping code each year until they added CSV. This past year (2018), I added code to parse the JSON data and I think I may have finally reached a point that the program is finished.
Well, it doesn't. I still have to make decisions. What this program assists in, is building a good team. It does this by showing me a "road map" to getting a good set of WRs and RBs (and hopefully a good QB followed by a decent TE). What the above is showing me is that there aren't very many "#1 RBs" so I need to get what I can early. On the other hand, there are some nice WRs in the later (2+) rounds.
Since full implementation, in 2015 (through 2018), I have won 7 leagues, including two championships (in 2015 and 2017) in a friend's league, as well as a championship (in 2016) of another friend's league. Last year (2018) was the first year, since before 2015 that I didn't win a championship in any of my (three) friends/family leagues. Although in 2018, I did place 2nd in both my family league and one of my friends league (so I did make the championship in two out of three):
This is one of those scenarios where I had an idea, it didn't really work, but then I made it work. I tried to calculate probabilities for drafting each player (the p value you see first by each player). These are essentially meaningless. Instead, you'll notice that I have a list of players that are in a "window" to be drafted. The first few are unlikely to be available, and the last few are quite likely (with the middle being--well in the middle). I found each list by finding some minimum ranking and then getting the next "twenty" players.